#include<iostream>
#include "SirFractii.h"

SirFractii::SirFractii()
  {
    std::cout<<"\nCitirea sirului de fractii:\n";
    for(int i = 0; i < max_index; i++)
      {
        std::cout<<"\nElementul "<<i + 1<<":";
	std::cin>>this->v[i];
      }
  }

SirFractii::SirFractii(int x)
  {
    for(int i = 0; i < max_index; i++)
      {

	this->v[i].numarator = x;
	this->v[i].numitor = 1;
      }
  }

void SirFractii::suma()
  {
    Fractie s;
    for(int i = 0; i < max_index; i++)
      {
        s = s + this->v[i];
      }
    s.simplifica();
    std::cout<<"\nSuma elementelor sirului este "<<s<<"("<<s.val()<<")";
  }//suma sirului

void SirFractii::afis()
  {
    Fractie x[max_index];
    for(int i = 0; i < max_index; i++)
      x[i] = this->v[i];
    for(int i = 0; i < max_index; i++)
        x[i].simplifica();
    std::cout<<"\nSirul cu fractiile ireductibile:\n";
    for(int i = 0; i < max_index; i++)
      std::cout<<x[i]<<" ";
  }//afisarea sirului cu fractiile ireductibile;

void SirFractii::gfl()
  {
    Fractie m;
    for(int i = 0; i < max_index; i++)
      if(this->v[i].val() < 1 && m < this->v[i]) 
        m = this->v[i];
    if(m.numarator == 0) std::cout<<"Nu exista fractii subunitare in sir!";
      else std::cout<<"Cea mai mare fracție subunitară din sir:\n"<<m;
  }//cea mai mare fracție subunitară

void SirFractii::lfu()
  {
    Fractie m;
    for(int i = 0; i < max_index; i++)
      if(this->v[i].val() > 1)
        if(m > this->v[i]) 
          m = this->v[i];
	  else if(m.val() == 0) m = this->v[i];
    if(m.numarator == 0) std::cout<<"Nu exista fractii supraunitare in sir!";
      else std::cout<<"Cea mai mică fracție supraunitară din sir:\n"<<m;
  }//cea mai mică fracție supraunitară

void SirFractii::sort() 
  {
    Fractie aux;
    for(int i = 0; i < max_index - 1; i++)
      for(int j = i + 1; j < max_index; j++)
        if(this->v[i] < this->v[j])
	  {
	    aux = this->v[i];
	    this->v[i] = this->v[j];
	    this->v[j] = aux;
	  }
   std::cout<<"\nSirul ordonat:\n";
   for(int i = 0; i < max_index; i++)
     std::cout<<this->v[i];
  }